A Kalman filter may be used to solve for static and dynamic parameters in a dynamic system having noisy measurements. One such system is a Global Navigation Satellite System (GNSS), in which satellite navigation measurements are affected by several sources of noise (e.g., multipath effects, ionospheric effects, tropospheric effects, etc.). There are two major motivations for using a Kalman filter in solving for these static and dynamic parameters, which are generally referred to as a state vector, using measurements which are a function of those parameters. First, the Kalman filter allows for the insertion of statistical driving forces that affect the dynamic parameters. Second, the Kalman filter allows a set of measurements taken at a specific measurement epoch to be processed as single measurements rather than as a block of measurements, which require the inversion of matrices.
While the ability to process one measurement at a time is a distinct processing advantage for the Kalman filter, it presents a problem in that the measurement residuals with respect to the final measurement update of the state vector are not available until all the measurements of the measurement epoch have been processed. Unfortunately, faulty measurements cannot be detected until all of the measurements of the measurement epoch have been processed. However, once the faulty measurements have been processed, the effects of the faulty measurements on the state vector and covariance matrix have already been included into the state vector and covariance matrix, respectively. Removing the effects of the faulty measurements typically requires abandoning the measurement update of the state vector and the update of the covariance matrix for the measurement epoch, and reprocessing the entire measurement set without the faulty measurements. However, reprocessing all the measurements for a measurement epoch can be computationally expensive and time consuming. For example, consider a Kalman filter that tracks the orbits of 30 global navigation satellites using 80 reference stations located around the world. In this example, approximately 800 satellite navigation measurements are processed during each measurement epoch (e.g., based on an average of 10 global navigation satellites in view at each of the 80 reference stations). If both refraction corrected code measurements and refraction corrected carrier phase measurements are processed 1,600 measurements are processed at each measurement epoch. Thus, reprocessing the entire measurement epoch to remove the faulty measurements is not a practical solution.
Hence, it is highly desirable to provide a system and method to compensate for faulty measurements without the aforementioned problems.